<!DOCTYPE HTML>
<html lang="en-US">
<head>
	<meta charset="UTF-8">
	<title>js-function-bind</title>
</head>
<body>
	<p>bind() 是在 ECMAScript5 中新增的方法，但在 ECMAScript3 中可以轻易模拟 bind()。</p>
	<p>这个方法的主要作用就是将函数绑定至某个对象。当函数 f() 上调用 bind() 方法并传入一个对象 o 作为参数，这个方法将返回一个新的函数。</p>
	<p>（以函数调用的方式）调用新的函数将会把原始的函数 f() 当做 o 的方法来调用。传入新函数的任何实参都将传入原始函数。</p>
</body>
</html>
<script type="text/javascript">
function f(y){
	return this.x + y;
}
var o = {
	x: 1
};
var g = f.bind(o);
g(2);	//g(x) => o.f(x)


//返回一个函数，通过调用它来调用 o 中的方法 f()，传递它所有的实参
function bind(f, o){
	if(f.bind) return f.bind(o);	//如果 bind() 方法存在的话，使用 bind() 方法
	else return function(){			//否则，这样绑定
		return f.apply(o, arguments);
	};
}
</script>